package org.dromara.web.system.domain.vo;

import java.util.Date;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.web.system.domain.AppUser;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;



/**
 * APP用户信息视图对象 app_user
 *
 * @author Lion Li
 * @date 2025-09-19
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = AppUser.class)
public class AppUserVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    @ExcelProperty(value = "用户ID")
    private Long id;

    /**
     * 用户账号
     */
    @ExcelProperty(value = "用户账号")
    private String userName;

    /**
     * 用户昵称
     */
    @ExcelProperty(value = "用户昵称")
    private String nickName;

    /**
     *  0用户  1采购员 2供应商 3司机 4仓库管理员 5质检员 6物流专员 7财务
     */
    @ExcelProperty(value = " 0用户  1采购员 2供应商 3司机 4仓库管理员 5质检员 6物流专员 7财务")
    private Long roleId;

    /**
     * 用户邮箱
     */
    @ExcelProperty(value = "用户邮箱")
    private String email;

    /**
     * 手机号码
     */
    @ExcelProperty(value = "手机号码")
    private String phone;

    /**
     * 用户性别（0=男 1=女 2=未知）
     */
    @ExcelProperty(value = "用户性别", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0==男,1==女,2==未知")
    private String sex;

    /**
     * UUID
     */
    @ExcelProperty(value = "UUID")
    private String uuid;

    /**
     * 邀请码
     */
    @ExcelProperty(value = "邀请码")
    private String inviteCode;

    /**
     * 父级ID
     */
    @ExcelProperty(value = "父级ID")
    private Long parentId;

    /**
     * 头像地址
     */
    @ExcelProperty(value = "头像地址")
    private String avatar;

    /**
     * 生活照片地址
     */
    @ExcelProperty(value = "生活照片地址")
    private String photo;

    /**
     * 姓名
     */
    @ExcelProperty(value = "姓名")
    private String codeName;

    /**
     * 身份证号码
     */
    @ExcelProperty(value = "身份证号码")
    private String code;

    /**
     * 密码
     */
    @ExcelProperty(value = "密码")
    private String password;

    /**
     * 职业
     */
    @ExcelProperty(value = "职业")
    private String occupation;

    /**
     * 学校
     */
    @ExcelProperty(value = "学校")
    private String school;

    /**
     * 用户签名
     */
    @ExcelProperty(value = "用户签名")
    private String signature;

    /**
     * 出生年月
     */
    @ExcelProperty(value = "出生年月")
    private Long birthday;

    /**
     * 身高(cm)
     */
    @ExcelProperty(value = "身高(cm)")
    private Long height;

    /**
     * 交友目的
     */
    @ExcelProperty(value = "交友目的")
    private String target;

    /**
     * 交友目的可见状态(0=所有人可见,1=相同目的可见,2=不可见)
     */
    @ExcelProperty(value = "交友目的可见状态(0=所有人可见,1=相同目的可见,2=不可见)")
    private String targetStatus;

    /**
     * 家乡
     */
    @ExcelProperty(value = "家乡")
    private String home;

    /**
     * 居住地省
     */
    @ExcelProperty(value = "居住地省")
    private String province;

    /**
     * 居住地市
     */
    @ExcelProperty(value = "居住地市")
    private String city;

    /**
     * 纬度
     */
    @ExcelProperty(value = "纬度")
    private Long latitude;

    /**
     * 经度
     */
    @ExcelProperty(value = "经度")
    private Long longitude;

    /**
     * 账号类型0=用户注册，1=自动注册
     */
    @ExcelProperty(value = "账号类型0=用户注册，1=自动注册")
    private String register;

    /**
     * 在线状态  (0=不在线，1=在线)
     */
    @ExcelProperty(value = "在线状态  (0=不在线，1=在线)")
    private String onlineStatus;

    /**
     * 帐号状态（0=正常 1=冻结，2=注销）
     */
    @ExcelProperty(value = "帐号状态", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "0==正常,1==冻结，2=注销")
    private String status;

    /**
     * 用户靓号ID
     */
    @ExcelProperty(value = "用户靓号ID")
    private String accountNumber;

    /**
     * 用户等级
     */
    @ExcelProperty(value = "用户等级")
    private Long level;

    /**
     * 销售等级
     */
    @ExcelProperty(value = "销售等级")
    private Long salesLevel;

    /**
     * 减免手续费百分比
     */
    @ExcelProperty(value = "减免手续费百分比")
    private Long reduceLv;

    /**
     * 用户的父级
     */
    @ExcelProperty(value = "用户的父级")
    private String parentIds;

    /**
     * 设备唯一编号
     */
    @ExcelProperty(value = "设备唯一编号")
    private String uniqueCode;

    /**
     * 最后登录IP
     */
    @ExcelProperty(value = "最后登录IP")
    private String loginIp;

    /**
     * 最后登录时间
     */
    @ExcelProperty(value = "最后登录时间")
    private Date loginDate;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;


}
